package com.ruoyi.product.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.Date;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class couponVo {

    /**
     * 优惠券 ID（主键）
     */
    private Long couponId;

    /**
     * 使用的订单号（外键，关联 order 表，未使用为 null）
     */
    @Excel(name = "使用的订单号", readConverterExp = "外=键，关联,o=rder,表=，未使用为,n=ull")
    private String useOrderId;

    /**
     * 优惠券组 ID（外键，关联 coupon_group 表）
     */
    @Excel(name = "优惠券组 ID", readConverterExp = "外=键，关联,coupon_group,表")
    private Long couponGroupId;

    /**
     * 优惠券编号
     */
    @Excel(name = "优惠券编号")
    private String couponCode;

    /**
     * 优惠券名称（如 “满 100 减 20”）
     */
    @Excel(name = "优惠券名称", readConverterExp = "如=,“=满,1=00,减=,2=0”")
    private String couponName;

    /**
     * 类型（0 满减券，1 折扣券）
     */
    @Excel(name = "类型", readConverterExp = "0=,满=减券，1,折=扣券")
    private Long couponType;

    /**
     * 优惠值（满减券为金额，折扣券为折扣率，如 0.8 表示 8 折）
     */
    @Excel(name = "优惠值", readConverterExp = "满=减券为金额，折扣券为折扣率，如,0=.8,表=示,8=,折=")
    private BigDecimal couponValue;

    /**
     * 库存
     */
    @Excel(name = "库存")
    private Long couponStock;

    /**
     * 使用门槛（满多少可使用）
     */
    @Excel(name = "使用门槛", readConverterExp = "满=多少可使用")
    private BigDecimal minAmount;

    /**
     * 有效期开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "有效期开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date couponStartTime;

    /**
     * 有效期结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "有效期结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date couponEndTime;

    /**
     * 状态（0 未使用，1 已使用，2 已过期）
     */
    @Excel(name = "状态", readConverterExp = "0=,未=使用，1,已=使用，2,已=过期")
    private Long couponStatus;

    /**
     * 领取时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "领取时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date getTime;

    /**
     * 说明
     */
    @Excel(name = "说明")
    private String couponRemark;
}
